<html>
<head><meta charset="utf-8"><title>general · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html">general</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="160511637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/160511637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#160511637">(Mar 11 2019 at 19:47)</a>:</h4>
<blockquote>
<p>I'll speak for myself but I describe Polonius as NLL 2.0</p>
</blockquote>
<p>Clearly that should be denoted as <code>NLL(2)</code></p>



<a name="161581475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/161581475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#161581475">(Mar 24 2019 at 14:22)</a>:</h4>
<p>The Zulip documentation <a href="help/format-your-message-using-markdown#mentions" target="_blank" title="help/format-your-message-using-markdown#mentions">uses "Polonius" as an example username</a>. What are the odds?</p>



<a name="162794667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162794667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162794667">(Apr 08 2019 at 07:11)</a>:</h4>
<p>I have noticed that I cannot compile the rand crate (which is a very common dependency)  with Polonius enabled in the Rust nightly (<code>-Zpolonius -Zborrowck=mir -Ztwo-phase-borrows</code>, though the same happens without <code>-Zpolonius</code>). I get this error:</p>
<div class="codehilite"><pre><span></span>/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:24: error[E0499]: cannot borrow `_` as mutable more than once at a time
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0506]: cannot assign to `_` because it is borrowed
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0499]: cannot borrow `_` as mutable more than once at a time
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0506]: cannot assign to `_` because it is borrowed
error: aborting due to 4 previous errors
error: Could not compile `rand`.
warning: build failed, waiting for other jobs to finish...
error: build failed
</pre></div>


<p>Why is this and should I be using a different set of parameters?</p>



<a name="162795867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162795867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162795867">(Apr 08 2019 at 07:38)</a>:</h4>
<p>Also, where <em>is</em> everybody? I haven't heard anything from anyone in weeks now?</p>



<a name="162799618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162799618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pachi <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162799618">(Apr 08 2019 at 08:50)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> , some people, like <span class="user-mention" data-user-id="116009">@nikomatsakis</span> and <span class="user-mention" data-user-id="116266">@Santiago Pastorino</span> have been in Rustconf Latam last week.</p>



<a name="162799634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162799634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162799634">(Apr 08 2019 at 08:50)</a>:</h4>
<p><span class="user-mention" data-user-id="125416">@pachi</span> I see, and they stayed for two weeks? Makes sense</p>



<a name="162799689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162799689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pachi <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162799689">(Apr 08 2019 at 08:51)</a>:</h4>
<p>Probably they were preparing or organising the conf</p>



<a name="162807130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162807130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162807130">(Apr 08 2019 at 11:06)</a>:</h4>
<p>the conference was in Montevideo which is where I live, so I didn't move</p>



<a name="162807132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162807132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162807132">(Apr 08 2019 at 11:06)</a>:</h4>
<p>had a lot of work :)</p>



<a name="162807263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162807263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162807263">(Apr 08 2019 at 11:09)</a>:</h4>
<blockquote>
<p>I have noticed that I cannot compile the rand crate (which is a very common dependency)  with Polonius enabled in the Rust nightly (<code>-Zpolonius -Zborrowck=mir -Ztwo-phase-borrows</code>, though the same happens without <code>-Zpolonius</code>). I get this error:</p>
<p>/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:24: error[E0499]: cannot borrow <code>_</code> as mutable more than once at a time<br>
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0506]: cannot assign to <code>_</code> because it is borrowed<br>
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0499]: cannot borrow <code>_</code> as mutable more than once at a time<br>
/Users/albin/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/read.rs:73:29: error[E0506]: cannot assign to <code>_</code> because it is borrowed<br>
error: aborting due to 4 previous errors<br>
error: Could not compile <code>rand</code>.<br>
warning: build failed, waiting for other jobs to finish...<br>
error: build failed</p>
<p>Why is this and should I be using a different set of parameters?</p>
</blockquote>
<p>if you compile that just with nll on I guess that works, right?</p>



<a name="162807494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162807494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162807494">(Apr 08 2019 at 11:12)</a>:</h4>
<p>oh, just noticed that you said that it doesn't work without <code>-Zpolonius</code>, if you do <code>-Zborrowck=mir -Ztwo-phase-borrows</code> you're running in pure nll mode</p>



<a name="162807511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162807511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162807511">(Apr 08 2019 at 11:13)</a>:</h4>
<p>have you checked rand code?</p>



<a name="162809615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162809615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162809615">(Apr 08 2019 at 11:51)</a>:</h4>
<blockquote>
<p>have you checked rand code?</p>
</blockquote>
<p>no, but I did compile it with just NLL (that is, without the Polonius command switch; it works neither with nor without). I figured that I maybe was doing the wrong thing.</p>



<a name="162809875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162809875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162809875">(Apr 08 2019 at 11:55)</a>:</h4>
<p>It seems those are from a quite old version though, so maybe that's the reason</p>



<a name="162809948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162809948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162809948">(Apr 08 2019 at 11:56)</a>:</h4>
<p>Yes, because it seems the master branch compiles, I think</p>



<a name="162809952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162809952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162809952">(Apr 08 2019 at 11:56)</a>:</h4>
<p>Or so my preliminary tests say</p>



<a name="162819518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819518">(Apr 08 2019 at 14:02)</a>:</h4>
<blockquote>
<blockquote>
<p>have you checked rand code?</p>
</blockquote>
<p>no, but I did compile it with just NLL (that is, without the Polonius command switch; it works neither with nor without). I figured that I maybe was doing the wrong thing.</p>
</blockquote>
<p>I'm not sure what does that means exactly</p>



<a name="162819528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819528">(Apr 08 2019 at 14:02)</a>:</h4>
<p>it doesn't work in Polonius</p>



<a name="162819534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819534">(Apr 08 2019 at 14:02)</a>:</h4>
<p>it works using migrate mode</p>



<a name="162819544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819544">(Apr 08 2019 at 14:02)</a>:</h4>
<p>and it doesn't work in nll only mode</p>



<a name="162819545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819545">(Apr 08 2019 at 14:02)</a>:</h4>
<p>?</p>



<a name="162819550"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819550" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819550">(Apr 08 2019 at 14:03)</a>:</h4>
<p>that's what you meant?</p>



<a name="162819671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819671">(Apr 08 2019 at 14:04)</a>:</h4>
<p>remember that in migrate mode if nll fails falls back to ast mode</p>



<a name="162819680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162819680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162819680">(Apr 08 2019 at 14:04)</a>:</h4>
<p>it may be happening something like that</p>



<a name="162838324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162838324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162838324">(Apr 08 2019 at 17:36)</a>:</h4>
<blockquote>
<p>it works using migrate mode</p>
</blockquote>
<p>What is migrate mode? No options at all? In that case, yes, I presume it does, or nobody would depend on those crates</p>



<a name="162838419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162838419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162838419">(Apr 08 2019 at 17:37)</a>:</h4>
<p>But this is surprising to me, as I thought NLL was supposed to only allow more types of code by expanding the reasoning, so everything that compiles without NLL should compile with it, right?</p>



<a name="162912378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162912378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162912378">(Apr 09 2019 at 13:57)</a>:</h4>
<blockquote>
<p>But this is surprising to me, as I thought NLL was supposed to only allow more types of code by expanding the reasoning, so everything that compiles without NLL should compile with it, right?</p>
</blockquote>
<p>As far as I know, it can happen that the code used to compile because the old AST borrow checker has a bug that was fixed in NLL. In this case, the compiler should report a warning instead of a hard error.</p>



<a name="162912470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162912470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162912470">(Apr 09 2019 at 13:58)</a>:</h4>
<p>That was my impression as well, but these are absolutely hard errors. In that case, I think it's worth a bit of detective work to figure out what is going on</p>



<a name="162912805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162912805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162912805">(Apr 09 2019 at 14:01)</a>:</h4>
<p>Wait, do you know whether using <code>-Zborrowck=mir</code> isn't basically telling rustc to use the MIR borrow checker <strong>without</strong> migrate mode?</p>



<a name="162913078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162913078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162913078">(Apr 09 2019 at 14:04)</a>:</h4>
<p>It seems that the default for <code>-Zborrowck</code> now is <code>migrate</code>: <a href="https://github.com/rust-lang/rust/blob/a5dfdc589a1b44f01cb640cd0244372dcbbd6f37/src/tools/compiletest/src/runtest.rs#L1845" target="_blank" title="https://github.com/rust-lang/rust/blob/a5dfdc589a1b44f01cb640cd0244372dcbbd6f37/src/tools/compiletest/src/runtest.rs#L1845">https://github.com/rust-lang/rust/blob/a5dfdc589a1b44f01cb640cd0244372dcbbd6f37/src/tools/compiletest/src/runtest.rs#L1845</a>.</p>



<a name="162913134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162913134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162913134">(Apr 09 2019 at 14:05)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> Do you get a warning when compiling the <code>rand</code> crate with no flags?</p>



<a name="162913267"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162913267" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162913267">(Apr 09 2019 at 14:06)</a>:</h4>
<p><span class="user-mention" data-user-id="116109">@Vytautas Astrauskas</span>  I haven't tried it, mainly because it's an old version being pulled in as a dependency of another crate, but I presume it must have at some point compiled with something</p>



<a name="162913288"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162913288" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162913288">(Apr 09 2019 at 14:07)</a>:</h4>
<p>I wanted to hear if this was expected before investigating further as it's incredibly tangential to what I am actually doing, which is trying out Polonius on some crates</p>



<a name="162920014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/162920014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#162920014">(Apr 09 2019 at 15:14)</a>:</h4>
<p>I see. Makes sense.</p>



<a name="163033367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163033367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Keith Yeung <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163033367">(Apr 10 2019 at 18:43)</a>:</h4>
<p>is there any outstanding work that I can contribute to? i've been trying to re-familiarize myself with polonius</p>



<a name="163179618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163179618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163179618">(Apr 12 2019 at 11:09)</a>:</h4>
<p>interesting finding about <code>rand-0.4.6</code> as for me it doesn't build with <code>-Zpolonius</code> (regardless of the variant, and without testing the Hybrid one) on the latest nightly and with these same errors -- but does build with AST and MIR borrowck. AFAICT the rand 0.4.* versions are "old" (0.4.6 is recent but the first 0.4 is from 2017), and the latest, 0.6.5, seems to build both with and without <code>-Zpolonius</code>, I think because the code has been since changed. I'll look at extracting it, but it might be some of the more advanced cases where the behaviour differs in rustc between NLL and polonius (I think because not everything is "hooked up", Matthew would know more since they were the ones who managed to re-enable polonius and I forgot which cases were handled and which weren't -- I could be misremembering though)</p>



<a name="163195488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163195488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163195488">(Apr 12 2019 at 14:32)</a>:</h4>
<p>the <code>rand 0.4.6</code> NLL / polonius difference: <a href="https://play.rust-lang.org/?version=nightly&amp;mode=debug&amp;edition=2018&amp;gist=7369c3d90d9b0a2ada3a290bf968e876" target="_blank" title="https://play.rust-lang.org/?version=nightly&amp;mode=debug&amp;edition=2018&amp;gist=7369c3d90d9b0a2ada3a290bf968e876">extraction</a>, <a href="https://play.rust-lang.org/?version=nightly&amp;mode=debug&amp;edition=2018&amp;gist=f60c7f2cba8a0a144d18bfb79a1b2d38" target="_blank" title="https://play.rust-lang.org/?version=nightly&amp;mode=debug&amp;edition=2018&amp;gist=f60c7f2cba8a0a144d18bfb79a1b2d38">reduction</a></p>



<a name="163751255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163751255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163751255">(Apr 19 2019 at 17:49)</a>:</h4>
<p>I've finally moved the parser to dev dependencies so that clean builds are way shorter without having to build lalrpop et al :) (in <a href="https://github.com/rust-lang-nursery/polonius/issues/106" target="_blank" title="https://github.com/rust-lang-nursery/polonius/issues/106">polonius#106</a>)</p>



<a name="163759971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163759971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163759971">(Apr 19 2019 at 19:45)</a>:</h4>
<p>Dag nabbit, one of these days I will make LALRPOP build faster.</p>



<a name="163759978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163759978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163759978">(Apr 19 2019 at 19:45)</a>:</h4>
<p>But in the meantime :P maybe we should switch to that PEG parser crate I see floating about?</p>



<a name="163759985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163759985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163759985">(Apr 19 2019 at 19:45)</a>:</h4>
<p>This one <a href="https://github.com/pest-parser/pest" target="_blank" title="https://github.com/pest-parser/pest">https://github.com/pest-parser/pest</a></p>



<a name="163760056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163760056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163760056">(Apr 19 2019 at 19:46)</a>:</h4>
<p>Looks pretty nifty and -- for this purpose -- PEG seems just fine.</p>



<a name="163760119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163760119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163760119">(Apr 19 2019 at 19:47)</a>:</h4>
<blockquote>
<p>I've finally moved the parser to dev dependencies so that clean builds are way shorter without having to build lalrpop et al :) (in <a href="https://github.com/rust-lang-nursery/polonius/issues/106" target="_blank" title="https://github.com/rust-lang-nursery/polonius/issues/106">polonius#106</a>)</p>
</blockquote>
<p><span class="user-mention" data-user-id="116113">@lqd</span> merged but see above :)</p>



<a name="163760322"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163760322" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163760322">(Apr 19 2019 at 19:50)</a>:</h4>
<p>ah yes, interesting thought :) a PEG crate for <code>nom</code> came out recently as well (unsure about licensing though, GPL)</p>



<a name="163760689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/163760689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#163760689">(Apr 19 2019 at 19:57)</a>:</h4>
<p>yeah, whichever. I have no opinion about licensing. Prob best to avoid GPL if we can</p>



<a name="165145137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165145137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165145137">(May 08 2019 at 08:47)</a>:</h4>
<p>I have a general code style question. One of the things that has been making it hard for me to follow the code in rustc is the use of very large container types with generic names like "facts". I am therefore considering using a style where I write more verbose but also more explicit code. For example, changing the fact-extracting visitor from this:</p>
<div class="codehilite"><pre><span></span><span class="w"> </span><span class="n">LivenessFactsExtractor</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">facts</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">location_table</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="w">    </span><span class="p">.</span><span class="n">visit_mir</span><span class="p">(</span><span class="n">mir</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>to this:</p>
<div class="codehilite"><pre><span></span><span class="n">LivenessPointFactsExtractor</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">var_defined</span>: <span class="kp">&amp;</span><span class="nc">mut</span><span class="w"> </span><span class="n">facts</span><span class="p">.</span><span class="n">var_defined</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">var_used</span>: <span class="kp">&amp;</span><span class="nc">mut</span><span class="w"> </span><span class="n">facts</span><span class="p">.</span><span class="n">var_used</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">var_drop_used</span>: <span class="kp">&amp;</span><span class="nc">mut</span><span class="w"> </span><span class="n">facts</span><span class="p">.</span><span class="n">var_drop_used</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">location_table</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="w">    </span><span class="p">.</span><span class="n">visit_mir</span><span class="p">(</span><span class="n">mir</span><span class="p">);</span><span class="w"></span>
</pre></div>



<a name="165145220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165145220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165145220">(May 08 2019 at 08:48)</a>:</h4>
<p>What I like about this is that it's now explicit from the code which facts are actually populated, and from the name that it is point-associated facts. What I don't like is that it's way more verbose than before, and what I'm ambivalent about is that it's more brittle to changes in interfaces, which is sometimes a good thing and sometimes a bad thing I think</p>



<a name="165145263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165145263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165145263">(May 08 2019 at 08:49)</a>:</h4>
<p>A particular bad smell is that I now have to re-declare the types of the vectors that are populated, which is good (I see the types involved right there in the file I am working on) and bad (if they change I have to change them everywhere)</p>



<a name="165159252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165159252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165159252">(May 08 2019 at 12:47)</a>:</h4>
<p>Yeah, I can imagine that it's kind of non-obvious which fact sets are populated where. I don't have a strong opinion. I'd say try it for a while and see how it feels.</p>



<a name="165159304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165159304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165159304">(May 08 2019 at 12:48)</a>:</h4>
<p>Regarding the types, you could also consider a type alias</p>



<a name="165159321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165159321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165159321">(May 08 2019 at 12:48)</a>:</h4>
<p>But overall I don't think they're repeated <em>that</em> many times, and obviously the compiler will catch any place that you overlook, so I wouldn't worry abut it myself.</p>



<a name="165610268"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165610268" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165610268">(May 14 2019 at 10:24)</a>:</h4>
<p>I finally posted the <a href="https://github.com/rust-lang/compiler-team/pull/91" target="_blank" title="https://github.com/rust-lang/compiler-team/pull/91">notes</a> from the previous meetings, sorry it took this long</p>



<a name="165629006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165629006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lokalmatador <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165629006">(May 14 2019 at 14:52)</a>:</h4>
<p>I won't be able to attend the meeting tonight as of some work event...sorry...but, to update you: currently working through the profiling stuff and soon able to start emitting data from the compiler - fingers crossed!</p>



<a name="165632957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165632957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165632957">(May 14 2019 at 15:40)</a>:</h4>
<p><span class="user-mention" data-user-id="218716">@lokalmatador</span> thanks for the heads up :)</p>



<a name="165643550"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165643550" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165643550">(May 14 2019 at 17:37)</a>:</h4>
<p><span class="user-mention" data-user-id="218716">@lokalmatador</span> awesome!</p>



<a name="165643570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/165643570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#165643570">(May 14 2019 at 17:37)</a>:</h4>
<p>I actually don't know if I can make it to the meeting tonight either</p>



<a name="166435916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/166435916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#166435916">(May 24 2019 at 09:19)</a>:</h4>
<p>(as mentioned a couple weeks ago, I'll be traveling next week <span aria-label="beach" class="emoji emoji-1f3d6" role="img" title="beach">:beach:</span>)</p>



<a name="166700775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/166700775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#166700775">(May 28 2019 at 10:03)</a>:</h4>
<p>Apparently, this is a control flow graph: <a href="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png" target="_blank" title="pasted_image.png">pasted image</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png" target="_blank" title="pasted image"><img src="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png"></a></div>



<a name="166700797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/166700797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#166700797">(May 28 2019 at 10:03)</a>:</h4>
<p>(I'm extending Polonius to generate graphviz files with liveness data for easier visualisation and debugging)</p>



<a name="166700875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/166700875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#166700875">(May 28 2019 at 10:04)</a>:</h4>
<p>I'm hoping to generate, as my subject reviewer named them, "fat rainbows" of liveness trails across these for my thesis</p>



<a name="166718510"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/166718510" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#166718510">(May 28 2019 at 13:47)</a>:</h4>
<blockquote>
<p>Apparently, this is a control flow graph: <a href="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png" target="_blank" title="pasted_image.png">pasted image</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png" target="_blank" title="pasted image"><img src="/user_uploads/4715/_S55vq1RtbrnMbG7nePc5u5v/pasted_image.png"></a></div></blockquote>
<p>strangely beautiful</p>



<a name="168338828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168338828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168338828">(Jun 17 2019 at 19:09)</a>:</h4>
<p>sorry I might not be able to make it to tomorrow's meeting; I think Niko might be unavailable because of Mozilla All Hands — if that's the case, maybe we can have async updates this week ? (I myself have continued on the the test suite, the easy cases are pretty much done — but will need a 2nd set of eyes — and the more problematic cases seem very much like bugs; I'd like to investigate more, esp around facts which might be missing) (I still haven't typed up notes for last week's meeting sorrryyyyyyyyy my plan is to do so on thursday)</p>



<a name="168345029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168345029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168345029">(Jun 17 2019 at 20:34)</a>:</h4>
<p>I am indeed unavailable this week</p>



<a name="168345916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168345916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168345916">(Jun 17 2019 at 20:46)</a>:</h4>
<p>I'll report in tomorrow, but I have progress (or, well, more failing test cases than before, but still). In case I manage to work everything out before the next meeting and everyone's gone, I can always work on teaching myself enough about type systems to understand the Oxide paper</p>



<a name="168415534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168415534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168415534">(Jun 18 2019 at 16:03)</a>:</h4>
<p>Ok, update: I have spent some time working on generating <code>var_initialized_on_exit</code> facts in rustc. It's almost working, and results are promising, but I have a problem with the start of unwind blocks not having their variables initialised. I'm doing this in <code>trace.rs</code>:</p>
<div class="codehilite"><pre><span></span><span class="k">fn</span> <span class="nf">add_polonius_var_initialized_on_exit_for</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">local</span>: <span class="nc">Local</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">move_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">move_data</span><span class="p">.</span><span class="n">rev_lookup</span><span class="p">.</span><span class="n">find_local</span><span class="p">(</span><span class="n">local</span><span class="p">);</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">facts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">typeck</span><span class="p">.</span><span class="n">borrowck_context</span><span class="p">.</span><span class="n">all_facts</span><span class="p">.</span><span class="n">as_mut</span><span class="p">().</span><span class="n">unwrap</span><span class="p">();</span><span class="w"></span>
<span class="w">    </span><span class="k">for</span><span class="w"> </span><span class="n">block</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">body</span><span class="p">.</span><span class="n">basic_blocks</span><span class="p">().</span><span class="n">indices</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">debug</span><span class="o">!</span><span class="p">(</span><span class="s">&quot;polonius: generating initialization facts for {:?} in {:?}&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">local</span><span class="p">,</span><span class="w"> </span><span class="n">block</span><span class="p">);</span><span class="w"></span>

<span class="w">        </span><span class="c1">// iterate through the block, applying the effects of each statement</span>
<span class="w">        </span><span class="c1">// up to and including location, and populate `var_initialized_on_exit`</span>
<span class="w">        </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">reset_to_entry_of</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>

<span class="w">        </span><span class="k">for</span><span class="w"> </span><span class="n">statement_index</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="p">..</span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">body</span><span class="p">[</span><span class="n">block</span><span class="p">].</span><span class="n">statements</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="kd">let</span><span class="w"> </span><span class="n">current_location</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Location</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">block</span><span class="p">,</span><span class="w"> </span><span class="n">statement_index</span><span class="w"> </span><span class="p">};</span><span class="w"></span>

<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">reconstruct_statement_effect</span><span class="p">(</span><span class="n">current_location</span><span class="p">);</span><span class="w"></span>

<span class="w">            </span><span class="c1">// statement has not yet taken effect:</span>
<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">has_any_child_of</span><span class="p">(</span><span class="n">move_path</span><span class="p">).</span><span class="n">is_some</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="n">facts</span><span class="w"></span>
<span class="w">                    </span><span class="p">.</span><span class="n">var_initialized_on_exit</span><span class="w"></span>
<span class="w">                    </span><span class="p">.</span><span class="n">push</span><span class="p">((</span><span class="n">local</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">location_table</span><span class="p">.</span><span class="n">start_index</span><span class="p">(</span><span class="n">current_location</span><span class="p">)));</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>

<span class="w">            </span><span class="c1">// statement has now taken effect</span>
<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">apply_local_effect</span><span class="p">(</span><span class="n">current_location</span><span class="p">);</span><span class="w"></span>

<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">has_any_child_of</span><span class="p">(</span><span class="n">move_path</span><span class="p">).</span><span class="n">is_some</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="n">facts</span><span class="w"></span>
<span class="w">                    </span><span class="p">.</span><span class="n">var_initialized_on_exit</span><span class="w"></span>
<span class="w">                    </span><span class="p">.</span><span class="n">push</span><span class="p">((</span><span class="n">local</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">location_table</span><span class="p">.</span><span class="n">mid_index</span><span class="p">(</span><span class="n">current_location</span><span class="p">)));</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
<span class="w">        </span><span class="p">}</span><span class="w"></span>

<span class="w">        </span><span class="c1">// apply the effects of the terminator and push it if needed</span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">terminator_location</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">body</span><span class="p">.</span><span class="n">terminator_loc</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>
<span class="w">        </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">reset_to_exit_of</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>

<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">has_any_child_of</span><span class="p">(</span><span class="n">move_path</span><span class="p">).</span><span class="n">is_some</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="n">facts</span><span class="w"></span>
<span class="w">                </span><span class="p">.</span><span class="n">var_initialized_on_exit</span><span class="w"></span>
<span class="w">                </span><span class="p">.</span><span class="n">push</span><span class="p">((</span><span class="n">local</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">location_table</span><span class="p">.</span><span class="n">mid_index</span><span class="p">(</span><span class="n">terminator_location</span><span class="p">)));</span><span class="w"></span>
<span class="w">        </span><span class="p">}</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>In other words, I am going through the statements of each block and for each statement emit facts for the start and mid-point of each Location before and after the statement has taken effect respectively. I suspect I should do something before the first statement of each block to get the flow analysis to "catch up". Any suggestions?</p>



<a name="168415702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168415702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168415702">(Jun 18 2019 at 16:05)</a>:</h4>
<p>(I had to emit facts for each Location, as the propagation of drop-liveness would stop as soon as it reached a Location where the facts were not emitted, due to how the rules are currently written)</p>



<a name="168415790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168415790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168415790">(Jun 18 2019 at 16:05)</a>:</h4>
<p>(for <code>return</code> blocks everything works fine)</p>



<a name="168415822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168415822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168415822">(Jun 18 2019 at 16:06)</a>:</h4>
<p>...I think</p>



<a name="168418264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168418264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168418264">(Jun 18 2019 at 16:36)</a>:</h4>
<p>Yes, I can confirm: if I manually edit the input facts so that the first Location has the same initialization for Start as for Mid, it produces the same <code>region_live_at</code>as rustc does for one of the problematic test cases</p>



<a name="168423962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168423962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lokalmatador <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168423962">(Jun 18 2019 at 17:20)</a>:</h4>
<p>hi, I unfortunately won't be able to make it to the meeting tonight. Nevertheless, short update: working on perf stuff, should have some results next week.</p>



<a name="168525314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168525314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168525314">(Jun 19 2019 at 17:09)</a>:</h4>
<p>Also, ping <span class="user-mention" data-user-id="116009">@nikomatsakis</span>  for <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/general/near/168415534" title="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/general/near/168415534">https://rust-lang.zulipchat.com/#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/general/near/168415534</a> whenever you get back! I still haven't figured this out.</p>



<a name="168525503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168525503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168525503">(Jun 19 2019 at 17:11)</a>:</h4>
<p>I will also be away next week from Wednesday, as my girlfriend finally comes back from Australia on Wednesday, and I have  a family vacation Thursday--Sunday.</p>



<a name="168873107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168873107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168873107">(Jun 24 2019 at 18:25)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> sorry, was very busy last week, let me check that out now</p>



<a name="168873406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168873406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168873406">(Jun 24 2019 at 18:28)</a>:</h4>
<p>I'm wondering if you are having some problems due to the <code>before_statement_effect</code>, which I kind of forgot about</p>



<a name="168873469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168873469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168873469">(Jun 24 2019 at 18:29)</a>:</h4>
<blockquote>
<p>Yes, I can confirm: if I manually edit the input facts so that the first Location has the same initialization for Start as for Mid, it produces the same <code>region_live_at</code>as rustc does for one of the problematic test cases</p>
</blockquote>
<p>can you say a bit more about this?</p>



<a name="168873470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168873470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168873470">(Jun 24 2019 at 18:29)</a>:</h4>
<p>i.e., what is the value <em>before</em> you changed it, and what is the value <em>afterwards</em>?</p>



<a name="168873563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168873563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168873563">(Jun 24 2019 at 18:30)</a>:</h4>
<p>actually the <code>before_statement_effect</code> is only relevant to the "borrows" set, which isn't the dataflow we're walking over here, so that's probably irrelevant</p>



<a name="168874871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168874871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168874871">(Jun 24 2019 at 18:46)</a>:</h4>
<blockquote>
<p>i.e., what is the value <em>before</em> you changed it, and what is the value <em>afterwards</em>?</p>
</blockquote>
<p>another option <span class="user-mention" data-user-id="204115">@Albin Stjerna</span> would be to point me at your branch + the test in question</p>



<a name="168878420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168878420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168878420">(Jun 24 2019 at 19:35)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Welcome back! Ok, what seems to happen is that with the new fact-generation code and the new <code>var_drop_live</code> code, the maybe-initialized-drop-with-uninitialized-fragments test case _almost_ works. However, in the specific case of an unwind block when some variables are initialised in the parent block, they seem to be not initialised (that is, missing) in the generated facts for the start of the first line of the unwind block. They "become" initialised again at mid-point, but by then the liveness propagation may have stopped and it's too late.</p>
<p>What I specifically did was adding the following facts to <code>var_initialized_on_exit</code>:</p>
<div class="codehilite"><pre><span></span>- &quot;_6&quot;  &quot;Start of bb9[0]&quot;
- &quot;_6&quot;  &quot;Start(bb3[0])&quot;
- &quot;_6&quot;  &quot;Start(bb11[3])&quot;
- &quot;_6&quot;  &quot;Start(bb13[0])&quot;
- &quot;_6&quot;  &quot;Start(bb14[3])&quot;
- &quot;_6&quot;  &quot;Start(bb12[0])&quot;
- &quot;_2&quot;  &quot;Start(bb3[0])&quot;
</pre></div>



<a name="168878459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168878459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168878459">(Jun 24 2019 at 19:35)</a>:</h4>
<p>This is all very weird, because it works for the return successor!</p>



<a name="168878537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168878537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168878537">(Jun 24 2019 at 19:36)</a>:</h4>
<p>So I suspect I am somehow missing some detail of how the reset of <code>flow_init</code> works. Maybe I need to shake something/pull some lever for something to reset-but-not-that-much</p>



<a name="168879188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168879188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168879188">(Jun 24 2019 at 19:45)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> yeah that code is just a <em>bit</em> subtle...</p>



<a name="168879195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168879195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168879195">(Jun 24 2019 at 19:45)</a>:</h4>
<p>let me check out the dumped mir I guess</p>



<a name="168879274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168879274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168879274">(Jun 24 2019 at 19:46)</a>:</h4>
<p>Thanks :)</p>



<a name="168880215"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880215" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880215">(Jun 24 2019 at 19:59)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> do you know if all of those are needed?</p>



<a name="168880222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880222">(Jun 24 2019 at 19:59)</a>:</h4>
<p>e.g., the first one is a bit strange</p>



<a name="168880239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880239">(Jun 24 2019 at 19:59)</a>:</h4>
<p>since (from what I can tell) <code>_6</code> is moved in <code>bb7</code> which dominates <code>bb9</code> (I think)</p>



<a name="168880298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880298">(Jun 24 2019 at 19:59)</a>:</h4>
<p>otoh <code>bb3</code> .. seems correct</p>



<a name="168880436"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880436" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880436">(Jun 24 2019 at 20:01)</a>:</h4>
<p>hmm but bb9 has a drop of <code>_6</code></p>



<a name="168880441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880441">(Jun 24 2019 at 20:01)</a>:</h4>
<p>I guess I should view the dot</p>



<a name="168880541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880541">(Jun 24 2019 at 20:02)</a>:</h4>
<p><a href="/user_uploads/4715/P5Yw3-GTJT2D7-DnyiTVqe_8/maybe-initialized-drop-with-uninitialized-fragments-facts.pdf" target="_blank" title="maybe-initialized-drop-with-uninitialized-fragments-facts.pdf">maybe-initialized-drop-with-uninitialized-fragments-facts.pdf</a> <a href="/user_uploads/4715/K_LI-ym1SfO6afjWR4oQGYwU/maybe-initialized-drop-with-uninitialized-fragments-liveness.pdf" target="_blank" title="maybe-initialized-drop-with-uninitialized-fragments-liveness.pdf">maybe-initialized-drop-with-uninitialized-fragments-liveness.pdf</a></p>



<a name="168880553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880553">(Jun 24 2019 at 20:02)</a>:</h4>
<blockquote>
<p>since (from what I can tell) <code>_6</code> is moved in <code>bb7</code> which dominates <code>bb9</code> (I think)</p>
</blockquote>
<p>ok that's mistaken, it's a move of <code>_6.1</code></p>



<a name="168880676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880676">(Jun 24 2019 at 20:04)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> what are you using <code>var_initialized_on_exit</code> for?</p>



<a name="168880725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880725">(Jun 24 2019 at 20:04)</a>:</h4>
<p>that's a .. dangerous concept</p>



<a name="168880748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880748">(Jun 24 2019 at 20:04)</a>:</h4>
<p>er wait</p>



<a name="168880751"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880751" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880751">(Jun 24 2019 at 20:04)</a>:</h4>
<p>I meant specifically around the terminator</p>



<a name="168880753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880753">(Jun 24 2019 at 20:04)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I am using it for <code>var_drop_live</code>, as you proposed</p>



<a name="168880765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880765">(Jun 24 2019 at 20:04)</a>:</h4>
<p>yeah sorry I was confusing myself</p>



<a name="168880801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880801">(Jun 24 2019 at 20:05)</a>:</h4>
<p>Haha it's ok, you've been away</p>



<a name="168880806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880806">(Jun 24 2019 at 20:05)</a>:</h4>
<p>That's very normal</p>



<a name="168880879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880879">(Jun 24 2019 at 20:06)</a>:</h4>
<p>Anyway the code for <code>var_drop_live</code>is now:</p>
<div class="codehilite"><pre><span></span><span class="c1">// var_drop_live(V, P) :-</span>
<span class="w">        </span><span class="c1">//     var_drop_live(V, Q),</span>
<span class="w">        </span><span class="c1">//     cfg_edge(P, Q),</span>
<span class="w">        </span><span class="c1">//     !var_defined(V, P)</span>
<span class="w">        </span><span class="c1">//     var_initialized_on_exit(V, P).</span>
<span class="w">        </span><span class="c1">// extend p with v:s from q such that v is not in q, there is an edge from p to q</span>
<span class="w">        </span><span class="n">var_drop_live_var</span><span class="p">.</span><span class="n">from_leapjoin</span><span class="p">(</span><span class="w"></span>
<span class="w">            </span><span class="o">&amp;</span><span class="n">var_drop_live_var</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="p">(</span><span class="w"></span>
<span class="w">                </span><span class="n">var_defined_rel</span><span class="p">.</span><span class="n">extend_anti</span><span class="p">(</span><span class="o">|&amp;</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">_q</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">v</span><span class="p">),</span><span class="w"></span>
<span class="w">                </span><span class="n">cfg_edge_reverse_rel</span><span class="p">.</span><span class="n">extend_with</span><span class="p">(</span><span class="o">|&amp;</span><span class="p">(</span><span class="n">_v</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">q</span><span class="p">),</span><span class="w"></span>
<span class="w">                </span><span class="n">var_initialized_on_exit_rel</span><span class="p">.</span><span class="n">extend_with</span><span class="p">(</span><span class="o">|&amp;</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">_q</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">v</span><span class="p">),</span><span class="w"></span>
<span class="w">            </span><span class="p">),</span><span class="w"></span>
<span class="w">            </span><span class="o">|&amp;</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">_q</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="n">p</span><span class="o">|</span><span class="w"> </span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">),</span><span class="w"></span>
<span class="w">        </span><span class="p">);</span><span class="w"></span>
</pre></div>



<a name="168880926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880926">(Jun 24 2019 at 20:07)</a>:</h4>
<p>there is this subtle distinction</p>



<a name="168880931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880931">(Jun 24 2019 at 20:07)</a>:</h4>
<p>that <em>may</em> be relevant here</p>



<a name="168880944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880944">(Jun 24 2019 at 20:07)</a>:</h4>
<p>if you have a basic block that ends on a call like:</p>
<div class="codehilite"><pre><span></span>X = foo(...) return BB1 unwind BB2
</pre></div>



<a name="168880951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880951">(Jun 24 2019 at 20:07)</a>:</h4>
<p>then <code>X</code> is initialized on entry to BB1 but not on entry to BB2</p>



<a name="168880956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168880956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168880956">(Jun 24 2019 at 20:07)</a>:</h4>
<p>but I don't immediately see how that's relevant to the example</p>



<a name="168881077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881077">(Jun 24 2019 at 20:09)</a>:</h4>
<p>that said</p>



<a name="168881090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881090">(Jun 24 2019 at 20:09)</a>:</h4>
<p>I'm wondering if <code>var_initialized_on_exit_rel</code> is really what we want, as opposed to <code>var_initialized_on_entry</code></p>



<a name="168881261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881261">(Jun 24 2019 at 20:12)</a>:</h4>
<p>I'm not sure how much this matters though to your problem though</p>



<a name="168881297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881297">(Jun 24 2019 at 20:12)</a>:</h4>
<p>I think I should think hard about those variable names in general</p>



<a name="168881328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881328">(Jun 24 2019 at 20:13)</a>:</h4>
<p>Because they are getting very inconsistent</p>



<a name="168881468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881468">(Jun 24 2019 at 20:14)</a>:</h4>
<p>I think we want on <em>entry</em> -- i.e., it is live on entry to P if it is initialized on entry to P and might be dropped later</p>



<a name="168881492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881492">(Jun 24 2019 at 20:15)</a>:</h4>
<p>but what I'm trying to remember now is whether there is a good flag to dump the "initialization" data in flow-graph form</p>



<a name="168881505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881505">(Jun 24 2019 at 20:15)</a>:</h4>
<p>maybe <code>-Zunpretty=flowgraph=main</code></p>



<a name="168881518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881518">(Jun 24 2019 at 20:15)</a>:</h4>
<p>but it doesn't seem to work for things that get a compilation error</p>



<a name="168881935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168881935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168881935">(Jun 24 2019 at 20:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116118">@Matthew Jasper</span> or <span class="user-mention" data-user-id="116083">@pnkfelix</span> : is there a way to dump out the dataflow stats as part of a MIR dump?</p>



<a name="168882060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168882060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168882060">(Jun 24 2019 at 20:22)</a>:</h4>
<p>I guess not</p>



<a name="168882370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168882370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168882370">(Jun 24 2019 at 20:26)</a>:</h4>
<blockquote>
<p>I think we want on <em>entry</em> -- i.e., it is live on entry to P if it is initialized on entry to P and might be dropped later</p>
</blockquote>
<p>I'm not completely sure this isn't what I am actually doing in the code above. :)</p>



<a name="168882403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168882403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168882403">(Jun 24 2019 at 20:26)</a>:</h4>
<p>Ok, I'm going to bed now, but I'll read up on what happened while I was away in the morning!</p>



<a name="168883409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168883409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168883409">(Jun 24 2019 at 20:41)</a>:</h4>
<blockquote>
<p>I'm not completely sure this isn't what I am actually doing in the code above. :)</p>
</blockquote>
<p>Heh, yes. I think you're computing something in the middle..</p>



<a name="168883881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168883881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168883881">(Jun 24 2019 at 20:47)</a>:</h4>
<p>Ah, there is this attribute, but it appears to have bitrotted:</p>
<div class="codehilite"><pre><span></span>#[rustc_mir(borrowck_graphviz_postflow=&quot;mir_dump/main.dot&quot;)]
</pre></div>



<a name="168883925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168883925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168883925">(Jun 24 2019 at 20:48)</a>:</h4>
<p>at least, the output I get is rejected by <code>dot</code></p>



<a name="168884719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168884719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168884719">(Jun 24 2019 at 20:59)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> is this code pushed to your branch in <a href="https://github.com/rust-lang/rust/pull/60266" target="_blank" title="https://github.com/rust-lang/rust/pull/60266">https://github.com/rust-lang/rust/pull/60266</a> ?</p>



<a name="168884793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168884793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168884793">(Jun 24 2019 at 21:00)</a>:</h4>
<p>seems like no :(</p>



<a name="168886445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168886445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168886445">(Jun 24 2019 at 21:24)</a>:</h4>
<p>The attribute you identified is indeed what I would have used</p>



<a name="168886474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168886474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168886474">(Jun 24 2019 at 21:25)</a>:</h4>
<p>It is too bad we have not been testing that dot would be able to handle the output. Or that it conforms to a way smaller subset grammar</p>



<a name="168913084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168913084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168913084">(Jun 25 2019 at 06:31)</a>:</h4>
<blockquote>
<p><span class="user-mention silent" data-user-id="204115">Albin Stjerna</span> is this code pushed to your branch in <a href="https://github.com/rust-lang/rust/pull/60266" target="_blank" title="https://github.com/rust-lang/rust/pull/60266">https://github.com/rust-lang/rust/pull/60266</a> ?</p>
</blockquote>
<p>No, I wanted to avoid having 5000 commits with non-working code, but I'll push it soon!</p>



<a name="168913159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168913159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168913159">(Jun 25 2019 at 06:32)</a>:</h4>
<p>I really expected this to be something small of the type "no no you dummy you have to call <code>yak_shave</code> first to make the magic florb frob the bar"</p>



<a name="168913184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168913184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168913184">(Jun 25 2019 at 06:33)</a>:</h4>
<p>Err, it's 2 am where you are so maybe there's no rush</p>



<a name="168914931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168914931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168914931">(Jun 25 2019 at 07:13)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Pushed! <a href="https://github.com/rust-lang/rust/pull/60266/commits/aa520f76f9330aab9e0d36a7173f92acc4a5a6d6" target="_blank" title="https://github.com/rust-lang/rust/pull/60266/commits/aa520f76f9330aab9e0d36a7173f92acc4a5a6d6">https://github.com/rust-lang/rust/pull/60266/commits/aa520f76f9330aab9e0d36a7173f92acc4a5a6d6</a></p>



<a name="168950857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168950857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168950857">(Jun 25 2019 at 15:59)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> ok let me see if I can reproduce then</p>



<a name="168965163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965163">(Jun 25 2019 at 18:43)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> looks like I need some version of polonius with <code>var_initialized_on_exit</code> in the fact set</p>



<a name="168965266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965266">(Jun 25 2019 at 18:44)</a>:</h4>
<p>although i'm trying to do a local build where I remove some of that stuff and just insert <code>debug!</code></p>



<a name="168965291"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965291" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965291">(Jun 25 2019 at 18:44)</a>:</h4>
<p>Ah, you can use this branch if you want to: <a href="https://github.com/albins/polonius/tree/phase-1-initialization" target="_blank" title="https://github.com/albins/polonius/tree/phase-1-initialization">https://github.com/albins/polonius/tree/phase-1-initialization</a></p>



<a name="168965298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965298">(Jun 25 2019 at 18:44)</a>:</h4>
<p>It, err, should work</p>



<a name="168965355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965355">(Jun 25 2019 at 18:45)</a>:</h4>
<p>mostly I wanted debug output anyway</p>



<a name="168965362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965362">(Jun 25 2019 at 18:45)</a>:</h4>
<p>it's building now</p>



<a name="168965371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168965371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168965371">(Jun 25 2019 at 18:45)</a>:</h4>
<p>That sounds reasonable</p>



<a name="168969741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969741">(Jun 25 2019 at 19:35)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> I've been inspecting these results</p>



<a name="168969858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969858">(Jun 25 2019 at 19:37)</a>:</h4>
<p>first question, you have this diff:</p>
<div class="codehilite"><pre><span></span><span class="w">           </span><span class="c1">//self.cx.flow_inits.reconstruct_terminator_effect(terminator_location);</span>
<span class="w">            </span><span class="c1">//self.cx.flow_inits.apply_local_effect(terminator_location);</span>
<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">reset_to_exit_of</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>
</pre></div>



<a name="168969864"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969864" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969864">(Jun 25 2019 at 19:37)</a>:</h4>
<p>I assume that's just you messing around?&gt;</p>



<a name="168969883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969883">(Jun 25 2019 at 19:37)</a>:</h4>
<p>I think the bug is really simple</p>



<a name="168969891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969891">(Jun 25 2019 at 19:37)</a>:</h4>
<p>though it took me a while to see it</p>



<a name="168969912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969912">(Jun 25 2019 at 19:38)</a>:</h4>
<p>This is precisely what I expected!</p>



<a name="168969958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969958">(Jun 25 2019 at 19:38)</a>:</h4>
<p>And yes, there was quite some messing around</p>



<a name="168969977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969977">(Jun 25 2019 at 19:38)</a>:</h4>
<p>you <a href="https://github.com/rust-lang/rust/blob/aa520f76f9330aab9e0d36a7173f92acc4a5a6d6/src/librustc_mir/borrow_check/nll/type_check/liveness/trace.rs#L216-L220" target="_blank" title="https://github.com/rust-lang/rust/blob/aa520f76f9330aab9e0d36a7173f92acc4a5a6d6/src/librustc_mir/borrow_check/nll/type_check/liveness/trace.rs#L216-L220">are pushing results for <code>mid_index(terminator_location)</code></a></p>



<a name="168969987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969987">(Jun 25 2019 at 19:38)</a>:</h4>
<p>but never any results for <code>start_index(terminator_location)</code></p>



<a name="168969993"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168969993" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168969993">(Jun 25 2019 at 19:38)</a>:</h4>
<p>I think your pattern is roughly correct</p>



<a name="168970013"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970013" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970013">(Jun 25 2019 at 19:39)</a>:</h4>
<p>also I've decided that "on exit" is probably indeed what we were looking for</p>



<a name="168970025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970025">(Jun 25 2019 at 19:39)</a>:</h4>
<p>though I imagine it's .. roughly equivalent to "on entry"</p>



<a name="168970057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970057">(Jun 25 2019 at 19:39)</a>:</h4>
<p>Aaah, and I need to do that?</p>



<a name="168970107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970107">(Jun 25 2019 at 19:40)</a>:</h4>
<p>yes, all of your missing points were the <em>start</em> location of a terminator</p>



<a name="168970114"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970114" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970114">(Jun 25 2019 at 19:40)</a>:</h4>
<p>Doesn't the first row of the loop do that?</p>



<a name="168970123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970123">(Jun 25 2019 at 19:40)</a>:</h4>
<p>Hm, no because that starts at the first point I guess</p>



<a name="168970129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970129">(Jun 25 2019 at 19:40)</a>:</h4>
<p>Which isn't at the terminator?</p>



<a name="168970130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970130">(Jun 25 2019 at 19:40)</a>:</h4>
<p>it does the start/mid points of <em>statements</em></p>



<a name="168970140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970140">(Jun 25 2019 at 19:40)</a>:</h4>
<p>Ah, and the terminator isn't...ok I get it</p>



<a name="168970182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970182">(Jun 25 2019 at 19:41)</a>:</h4>
<p>anyway I think that's what's missing</p>



<a name="168970198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970198">(Jun 25 2019 at 19:41)</a>:</h4>
<p>re: on exit vs on entry, well, we have an edge <code>P -&gt; Q</code></p>



<a name="168970246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970246">(Jun 25 2019 at 19:42)</a>:</h4>
<p>Hmm, ok, wait no, the <code>reset_to_exit_of</code> wasn't spurious</p>



<a name="168970251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970251">(Jun 25 2019 at 19:42)</a>:</h4>
<p>we can't say "live on entry to Q" because that's too imprecise -- Q may have multiple predecessors</p>



<a name="168970274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970274">(Jun 25 2019 at 19:42)</a>:</h4>
<p>I thought that was the right way to "fast-forward" the flow analysis to the state at the terminator</p>



<a name="168970285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970285">(Jun 25 2019 at 19:42)</a>:</h4>
<blockquote>
<p>Hmm, ok, wait no, the <code>reset_to_exit_of</code> wasn't spurious</p>
</blockquote>
<p>I <em>think</em> it's equivalent but I'm not <em>100%</em> sure</p>



<a name="168970290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970290">(Jun 25 2019 at 19:42)</a>:</h4>
<p>it would indeed fast-forward if you hadn't walked the statements already</p>



<a name="168970298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970298">(Jun 25 2019 at 19:43)</a>:</h4>
<p>but I also think it's fine</p>



<a name="168970303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970303">(Jun 25 2019 at 19:43)</a>:</h4>
<p>Which I should have done</p>



<a name="168970310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970310">(Jun 25 2019 at 19:43)</a>:</h4>
<p>So it should be a no-op</p>



<a name="168970323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970323">(Jun 25 2019 at 19:43)</a>:</h4>
<p>the key thing is to do this</p>
<div class="codehilite"><pre><span></span><span class="w">            </span><span class="c1">// apply the effects of the terminator and push it if needed</span>
<span class="w">            </span><span class="kd">let</span><span class="w"> </span><span class="n">terminator_location</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">body</span><span class="p">.</span><span class="n">terminator_loc</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>

<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">has_any_child_of</span><span class="p">(</span><span class="n">move_path</span><span class="p">).</span><span class="n">is_some</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="n">debug</span><span class="o">!</span><span class="p">(</span><span class="w"></span>
<span class="w">                    </span><span class="s">&quot;var_initialized_on_exit({:?}, {:?})&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">                    </span><span class="n">local</span><span class="p">,</span><span class="w"></span>
<span class="w">                    </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">location_table</span><span class="p">.</span><span class="n">start_index</span><span class="p">(</span><span class="n">terminator_location</span><span class="p">),</span><span class="w"></span>
<span class="w">                </span><span class="p">);</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>

<span class="w">            </span><span class="c1">//self.cx.flow_inits.reconstruct_terminator_effect(terminator_location);</span>
<span class="w">            </span><span class="c1">//self.cx.flow_inits.apply_local_effect(terminator_location);</span>
<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">reset_to_exit_of</span><span class="p">(</span><span class="n">block</span><span class="p">);</span><span class="w"></span>

<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">flow_inits</span><span class="p">.</span><span class="n">has_any_child_of</span><span class="p">(</span><span class="n">move_path</span><span class="p">).</span><span class="n">is_some</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="n">debug</span><span class="o">!</span><span class="p">(</span><span class="w"></span>
<span class="w">                    </span><span class="s">&quot;var_initialized_on_exit({:?}, {:?})&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">                    </span><span class="n">local</span><span class="p">,</span><span class="w"></span>
<span class="w">                    </span><span class="bp">self</span><span class="p">.</span><span class="n">cx</span><span class="p">.</span><span class="n">location_table</span><span class="p">.</span><span class="n">mid_index</span><span class="p">(</span><span class="n">terminator_location</span><span class="p">),</span><span class="w"></span>
<span class="w">                </span><span class="p">);</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
</pre></div>



<a name="168970331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970331">(Jun 25 2019 at 19:43)</a>:</h4>
<p>except not with <code>debug!</code> logs :)</p>



<a name="168970348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970348">(Jun 25 2019 at 19:43)</a>:</h4>
<blockquote>
<p>So it should be a no-op</p>
</blockquote>
<p>yeah I think it's .. well, not a no-op, but equivalent to the commented out lines</p>



<a name="168970363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970363">(Jun 25 2019 at 19:43)</a>:</h4>
<p>The question is whether I need to make some additional statement at the terminator take effect before emitting the state at mid-point?</p>



<a name="168970421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970421">(Jun 25 2019 at 19:44)</a>:</h4>
<p>That's what I think I thought too</p>



<a name="168970442"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970442" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970442">(Jun 25 2019 at 19:44)</a>:</h4>
<p>you do need to do <em>something</em> between start/end</p>



<a name="168970446"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970446" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970446">(Jun 25 2019 at 19:44)</a>:</h4>
<p>Aah ok</p>



<a name="168970450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970450">(Jun 25 2019 at 19:44)</a>:</h4>
<p>I'll try that and see what happens!</p>



<a name="168970452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970452">(Jun 25 2019 at 19:44)</a>:</h4>
<p>I think applying the "reconstructed terminator effect"</p>



<a name="168970459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970459">(Jun 25 2019 at 19:44)</a>:</h4>
<p>and "reset to exit of" is equivalent</p>



<a name="168970471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970471">(Jun 25 2019 at 19:45)</a>:</h4>
<p>reset to exit of basically jumps back to the start and then applies the "complete gen/kill sets" for the entire block, which I believe include all statements + terminator</p>



<a name="168970480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970480">(Jun 25 2019 at 19:45)</a>:</h4>
<p>(as it is, you've already applied the gen/kill sets up to but not including the terminator)</p>



<a name="168970499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970499">(Jun 25 2019 at 19:45)</a>:</h4>
<p>pretty sure it's "six in one, half a dozen in the other", as they say...</p>



<a name="168970501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970501">(Jun 25 2019 at 19:45)</a>:</h4>
<p>Ok, that's where I was confused</p>



<a name="168970512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970512">(Jun 25 2019 at 19:45)</a>:</h4>
<p>I thought the terminator <em>was</em> a statement</p>



<a name="168970517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970517">(Jun 25 2019 at 19:45)</a>:</h4>
<p>I see</p>



<a name="168970644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168970644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168970644">(Jun 25 2019 at 19:47)</a>:</h4>
<p>Ok, recompiling now...</p>



<a name="168972836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168972836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168972836">(Jun 25 2019 at 20:13)</a>:</h4>
<p>HA, it works for the previously failing cases</p>



<a name="168972842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168972842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168972842">(Jun 25 2019 at 20:13)</a>:</h4>
<p>But err, has a regression</p>



<a name="168972885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168972885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168972885">(Jun 25 2019 at 20:14)</a>:</h4>
<p>I'll have to look at that later</p>



<a name="168972921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168972921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168972921">(Jun 25 2019 at 20:14)</a>:</h4>
<p>I have to go to sleep now :)</p>



<a name="168972951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168972951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168972951">(Jun 25 2019 at 20:15)</a>:</h4>
<p>Or well, at least stop working and start winding down</p>



<a name="168991116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/168991116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#168991116">(Jun 26 2019 at 00:52)</a>:</h4>
<blockquote>
<p>But err, has a regression</p>
</blockquote>
<p>which one :)</p>



<a name="169302360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169302360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169302360">(Jun 29 2019 at 15:46)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> (intermittently back to explain this): it's both <code>optional_drop_enum()</code> and <code>drop_enum()</code> from <code>enum-drop-access</code>. What seems to happen in <code>drop_enum()</code> (and I'd bet it's the same in <code>optional_drop_enum()</code>) is:</p>
<ul>
<li>variable <code>_1</code> is dropped in <code>bb8</code> and should be drop-live from there upwards</li>
<li>a missing <code>var_initialized_on_exit</code>in just that block stops it from being propagated</li>
<li><code>_1</code> <em>is</em> initialised at the start of <code>bb8[0]</code>, but is drop-used at <code>bb8[1]</code>. However, the MIR for bb8 looks like this (!?) and there shouldn't even be a <code>bb8[1]</code>?!</li>
</ul>
<div class="codehilite"><pre><span></span><span class="w"> </span><span class="n">bb8</span>: <span class="p">{</span><span class="w"></span>
<span class="w">          </span><span class="n">drop</span><span class="p">(</span><span class="n">_1</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="p">[</span><span class="k">return</span>: <span class="nc">bb9</span><span class="p">,</span><span class="w"> </span><span class="n">unwind</span>: <span class="nc">bb1</span><span class="p">];</span><span class="w"> </span><span class="c1">// bb8[0]: scope 0 at enum-drop-access.rs:20:1: 20:2</span>
<span class="w">  </span><span class="p">}</span><span class="w"></span>
</pre></div>


<ul>
<li>the actual code in the test is this:</li>
</ul>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">DropOption</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="nb">Some</span><span class="p">(</span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="nb">None</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="k">impl</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="nb">Drop</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">DropOption</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">fn</span> <span class="nf">drop</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">)</span><span class="w"> </span><span class="p">{}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="c1">// Dropping opt could access the value behind the reference,</span>
<span class="k">fn</span> <span class="nf">drop_enum</span><span class="p">(</span><span class="n">opt</span>: <span class="nc">DropOption</span><span class="o">&lt;&amp;</span><span class="k">mut</span><span class="w"> </span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">Option</span><span class="o">&lt;&amp;</span><span class="k">mut</span><span class="w"> </span><span class="kt">i32</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">match</span><span class="w"> </span><span class="n">opt</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">DropOption</span>::<span class="nb">Some</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="k">ref</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">r</span><span class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">//~ ERROR</span>
<span class="w">            </span><span class="nb">Some</span><span class="p">(</span><span class="n">r</span><span class="p">)</span><span class="w"></span>
<span class="w">        </span><span class="p">},</span><span class="w"></span>
<span class="w">        </span><span class="n">DropOption</span>::<span class="nb">None</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="nb">None</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>I don't see why this bug would appear now, given that I have only added <em>more</em> initialisation facts from Rustc, but one is not supposed to understand everything I guess.</p>



<a name="169303316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169303316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169303316">(Jun 29 2019 at 16:17)</a>:</h4>
<p>I'll have a closer look on Monday :)</p>



<a name="169388744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169388744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169388744">(Jul 01 2019 at 11:59)</a>:</h4>
<p>Update: the reason for the problem was stale <code>region_live_at</code> data with incorrect locations, so I added back the code to generate <code>region_live_at</code> to Rustc for now, and everything is working.</p>



<a name="169389086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169389086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169389086">(Jul 01 2019 at 12:04)</a>:</h4>
<p>I'm considering if it would be a good idea to split the inputs from Rust into separate structs internally early on entry and have <code>AllFacts</code> just be an interface into the engine, so that the now rather orthogonal components (such as the liveness parts) can handle their own data separately. Any thoughts?</p>



<a name="169413494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169413494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169413494">(Jul 01 2019 at 17:20)</a>:</h4>
<blockquote>
<p>so I added back the code to generate <code>region_live_at</code> to Rustc for now, and everything is working.</p>
</blockquote>
<p>this means liveness in Polonius computes the same <code>region_live_at</code> facts in memory, as the ones we read on disk from rustc ? if so, <span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span>  :)</p>



<a name="169419001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169419001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169419001">(Jul 01 2019 at 18:25)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> glad to hear things are working</p>



<a name="169419461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169419461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169419461">(Jul 01 2019 at 18:30)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> yes, precisely. :)</p>



<a name="169428810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169428810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169428810">(Jul 01 2019 at 20:32)</a>:</h4>
<p>most of the test failures are <a href="https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view" target="_blank" title="https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view">triaged</a>, there 4 cases left (3 variations on a theme, and seems possibly simple to categorize; and another "weird but probably straightforward to categorize); and in addition some cases that could be bugs in fact generation</p>



<a name="169428920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169428920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169428920">(Jul 01 2019 at 20:33)</a>:</h4>
<p>possibly "ready to double check"</p>



<a name="169429038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169429038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169429038">(Jul 01 2019 at 20:35)</a>:</h4>
<p>even though until all of those have issues filed or PRs posted, one could still go on — so I'll probably do so (and post the PR for the commits I have, for the issues which just look fine; if others agree with this pre-triage)</p>



<a name="169455857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169455857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lokalmatador <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169455857">(Jul 02 2019 at 06:10)</a>:</h4>
<p>hi, I unfortunately again won't be able to attend tonight as of going to a concert; got the tickets last year...</p>



<a name="169495689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169495689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169495689">(Jul 02 2019 at 16:32)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> what should I be reviewing :)</p>



<a name="169495860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169495860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169495860">(Jul 02 2019 at 16:34)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/60266" target="_blank" title="https://github.com/rust-lang/rust/issues/60266">#60266</a> needs a rebase + handling conflicts it seems</p>



<a name="169496010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169496010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169496010">(Jul 02 2019 at 16:35)</a>:</h4>
<p>or maybe is it still WIP <span aria-label="thinking" class="emoji emoji-1f914" role="img" title="thinking">:thinking:</span></p>



<a name="169505617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169505617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169505617">(Jul 02 2019 at 18:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span>, <span class="user-mention" data-user-id="116009">@nikomatsakis</span>: yes, but we also need to version-bump Polonius with the new dummy initialisation facts before the Rust branch can be merged. I’ll get that done tomorrow morning and poke you when it’s ready to review, Niko!</p>



<a name="169505687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169505687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169505687">(Jul 02 2019 at 18:19)</a>:</h4>
<p>Oh it would be so good to have the rustc branch merged and not have to deal with the constant rebasing</p>



<a name="169506823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169506823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169506823">(Jul 02 2019 at 18:31)</a>:</h4>
<p>ah true :)</p>



<a name="169508251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169508251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169508251">(Jul 02 2019 at 18:46)</a>:</h4>
<p>since we talked about it last week (I have not written the notes from last week's meeting <span aria-label="face palm" class="emoji emoji-1f926" role="img" title="face palm">:face_palm:</span>) I think there are a couple tasks which could be tackled by new contributors:<br>
- some refactoring: especially about naming relations, variables, or datalog rules; we were talking how <code>requires</code> is a name we should change, maybe test organization and the likes<br>
- increase the coverage of the rustc integration: after talking with Matthew it seems we probably should test more of the fact generation system, add the missing features etc</p>



<a name="169508912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169508912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169508912">(Jul 02 2019 at 18:54)</a>:</h4>
<p>not that they <em>should</em> be done by someone else, just that they might :) (I was planning on looking at fact generation next actually)</p>



<a name="169509017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169509017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169509017">(Jul 02 2019 at 18:55)</a>:</h4>
<p>for debugging, some datalog provenance would be nice as well, à la Yannis Smaragdakis (who I think Niko knows) — and such a feature would likely cause naming confusion if we renamed regions to provenances <span aria-label="joy" class="emoji emoji-1f602" role="img" title="joy">:joy:</span></p>



<a name="169559455"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559455" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559455">(Jul 03 2019 at 11:54)</a>:</h4>
<p>Well, judging by my background research, it seems Smaragdakis is one of the go-to authorities on static analysis in Datalog</p>



<a name="169559466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559466">(Jul 03 2019 at 11:54)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> Is that a trace of how the tuple propagation works?</p>



<a name="169559647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559647">(Jul 03 2019 at 11:57)</a>:</h4>
<p>yeah a provenance graph for the facts, say, this tuple was emitted at this round, because of rule X and input tuples Y from relations Z, and so on for the dependent tuples, would be useful to understand why Polonius ultimately computes an error</p>



<a name="169559673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559673">(Jul 03 2019 at 11:57)</a>:</h4>
<p>Ah, yes; it's what I have been doing in my head to debug my code :)</p>



<a name="169559724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559724">(Jul 03 2019 at 11:58)</a>:</h4>
<p>either for debugging the whole analysis, or specific rules while we're implementing new ones (or also useful to see duplicate tuple generation, eg for performance)</p>



<a name="169559731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559731">(Jul 03 2019 at 11:58)</a>:</h4>
<p>It's kind of fun though, propagating things across graphs. Sort of like crossword puzzles</p>



<a name="169559739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559739">(Jul 03 2019 at 11:58)</a>:</h4>
<p>yeah :)</p>



<a name="169559740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559740">(Jul 03 2019 at 11:58)</a>:</h4>
<p>Ooh yes</p>



<a name="169559933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169559933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169559933">(Jul 03 2019 at 12:01)</a>:</h4>
<p>(or an interactive mode, "please Polonius, proceed to the next round", or datafrog REPL)</p>



<a name="169802119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169802119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lokalmatador <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169802119">(Jul 07 2019 at 08:27)</a>:</h4>
<p>Hi,</p>
<p>by now I know I have not contributed much. However, I unfortunately cannot continue at this point. As of a recent job switch, I'm horribly exhausted due to an increase in work load. Also, I recently committed to training a local RoboCup team (robotics still being my favorite hobbyhorse), meaning that my evenings now will be very busy. That said and considering my own list or priorities I for now have to resign from contributing to rustc as I just don't know anymore how to fit this into my schedule. Sorry for letting you guys down, but for now this is the only feasible way for me. If at some point I again find the time to contribute, be sure I will call out once again.</p>



<a name="169825175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169825175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169825175">(Jul 07 2019 at 20:21)</a>:</h4>
<p><span class="user-mention" data-user-id="218716">@lokalmatador</span> Ok, so I can't speak in any official capacity or anything given that I'm just a random student and all, but I think this sounds like a very good way of handling shifting ground conditions and the best possible failure mode under the circumstances? The way I see things you haven't let anybody down at all. Good luck with your new job, and I hope it gets better as you settle in!</p>
<p>Also, please remember to take care of yourself in case it doesn't. I say this as someone who hardly knows someone who hasn't gone through completely avoidable burnout anymore.</p>



<a name="169826341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169826341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169826341">(Jul 07 2019 at 20:58)</a>:</h4>
<p><span class="user-mention" data-user-id="218716">@lokalmatador</span> no worries, take care of yourself first :)</p>



<a name="169877180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169877180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169877180">(Jul 08 2019 at 15:04)</a>:</h4>
<p>with Albin ending their master thesis soon, and Niko on vacation next week, maybe this WG won't need weekly sync meetings for the summer/until fall, as well ? (like wg-traits for example)</p>



<a name="169893116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893116">(Jul 08 2019 at 18:28)</a>:</h4>
<p>what do you think <span class="user-mention" data-user-id="116009">@nikomatsakis</span> ?</p>



<a name="169893433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893433">(Jul 08 2019 at 18:32)</a>:</h4>
<p>(esp if there's other/more pressing work to be done during this time?)</p>



<a name="169893572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893572">(Jul 08 2019 at 18:34)</a>:</h4>
<p>that sounds right</p>



<a name="169893574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893574">(Jul 08 2019 at 18:34)</a>:</h4>
<p>I actually can't make the mtg tomorrow either</p>



<a name="169893627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893627">(Jul 08 2019 at 18:35)</a>:</h4>
<p>alright :)</p>



<a name="169893651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893651">(Jul 08 2019 at 18:35)</a>:</h4>
<p>I will adjust the calendar I guess</p>



<a name="169893926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/169893926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#169893926">(Jul 08 2019 at 18:39)</a>:</h4>
<p>I've made progress in identifying issues in the <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/rustc.20compare-mode.20polonius" title="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/rustc.20compare-mode.20polonius">dedicated thread</a> and will try to continue on this and the other potential refinement until you're back</p>



<a name="170443883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170443883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170443883">(Jul 09 2019 at 11:17)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> it's likely going to be just us two tonight, so no real pressing need to have a meeting in the evening :) my update is: I've myself worked on the test suite quite a bit and found some interesting things, and have a promising lead thanks to Matthew and Niko. I've continued a bit on the refinement prototype and also found some interesting things there (though I still wish to investigate / need to test more). I didn't manage to write up the previous meeting notes yet (I'm not sure anybody reads them but I'll get it done <em>eventually</em> ;)</p>



<a name="170447010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170447010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170447010">(Jul 09 2019 at 12:07)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> Oh, that's great! I skimmed some of your posts but I haven't yet taken the time to get into the details of what you are doing. :)</p>
<p>I don't think I need a meeting either, but just to say something, I have been working a bit on my thesis and continued work on collecting crates and benchmarking/profiling their facts. It looks like the final tally might be around 10 000 repositories analysed, but workloads now take a long time to run so it's not done yet. I also did the final work to prepare the pull requests for liveness, and have written notes about what I expect to have to do to get the full initialisation analysis done. If Niko doesn't have any time to introduce me, I'll go out on a limb and see where that gets me.</p>
<p>Finally, I am also sort of working on taking Aaron's work on formalising the borrow check in Oxide and showing how it translates to the Polonius rules via some fudging about Mir for my thesis, with as little fudging as possible (I mean, I would love to have something formal, but I'm <em>never</em> going to have time for that).</p>



<a name="170448026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170448026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170448026">(Jul 09 2019 at 12:24)</a>:</h4>
<p>these 10 000 repositories will come in handy to check for correctness !</p>



<a name="170448069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170448069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170448069">(Jul 09 2019 at 12:25)</a>:</h4>
<p>at the very least we should be able to have a clearer picture on possible regressions, and have test cases for the features we know are missing, with your crater-lite</p>



<a name="170448168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170448168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170448168">(Jul 09 2019 at 12:27)</a>:</h4>
<p>really cool, awesome job! I'm also looking forward to the rustc liveness PR landing hopefully soon <span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span></p>



<a name="170479098"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170479098" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170479098">(Jul 09 2019 at 18:39)</a>:</h4>
<p>Thank you, and me too!</p>



<a name="170479424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/170479424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#170479424">(Jul 09 2019 at 18:43)</a>:</h4>
<p>Meanwhile, in my benchmarking scripts; I am letting my Python process analysing the nll-facts call itself as a child process with each crate in order to be able to set rlimits for the child process and avoid being OOM-killed on huge inputs</p>



<a name="176679587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176679587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176679587">(Sep 26 2019 at 17:45)</a>:</h4>
<p><span class="user-mention" data-user-id="116118">@Matthew Jasper</span> <span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span> on <a href="https://github.com/rust-lang/rust/pull/64749" target="_blank" title="https://github.com/rust-lang/rust/pull/64749">https://github.com/rust-lang/rust/pull/64749</a> - I was actually running tests with the Location::All <a href="https://github.com/rust-lang/rust/pull/64749/files#diff-ba0753882d4be5cd693895bfb01a889bL39-L58" target="_blank" title="https://github.com/rust-lang/rust/pull/64749/files#diff-ba0753882d4be5cd693895bfb01a889bL39-L58">hack</a> removed earlier today</p>



<a name="176679713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176679713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176679713">(Sep 26 2019 at 17:47)</a>:</h4>
<p>awesome job</p>



<a name="176679953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176679953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176679953">(Sep 26 2019 at 17:49)</a>:</h4>
<p>GG on the hrtb due-to-where-clause fix as well</p>



<a name="176680098"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176680098" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176680098">(Sep 26 2019 at 17:51)</a>:</h4>
<p>I assume CI didn't run the nll compare mode but you probably did</p>



<a name="176680125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176680125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176680125">(Sep 26 2019 at 17:51)</a>:</h4>
<p>(or maybe t-infra enabled it on PR builders already)</p>



<a name="176775653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176775653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176775653">(Sep 27 2019 at 19:01)</a>:</h4>
<p>btw you mention a commit to revert in that PR, was it the one about running the polonius compare mode on CI which was already removed, or the latest one which is more about NLLs than Polonius per se ?</p>



<a name="176775874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176775874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176775874">(Sep 27 2019 at 19:03)</a>:</h4>
<p>I was talking about the commit that I have already reverted.</p>



<a name="176775906"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176775906" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176775906">(Sep 27 2019 at 19:03)</a>:</h4>
<p>ah alright, I'll mark the comment resolved then</p>



<a name="176776084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176776084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176776084">(Sep 27 2019 at 19:05)</a>:</h4>
<p>and  S-waiting-on-review as well, since everything seems done ? (it's waiting on author rn)</p>



<a name="176776257"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176776257" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176776257">(Sep 27 2019 at 19:06)</a>:</h4>
<p>done</p>



<a name="176921970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176921970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176921970">(Sep 30 2019 at 11:05)</a>:</h4>
<p>I've been playing with rewriting the <code>Naive</code> rules to model demand propagation as if they were evaluated top-down (à la magic sets), and they should look like this (modulo some massaging around the <code>errors</code> entry point):</p>
<div class="codehilite"><pre><span></span><span class="nf">errors</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_errors_bb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">invalidates</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">borrow_live_at</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">borrow_live_at</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_borrow_live_at_bb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">borrow_region</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">Q</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="p">!</span><span class="nf">killed</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">cfg_edge</span><span class="p">(</span><span class="nv">P</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbf</span><span class="p">(</span><span class="nv">B</span><span class="p">),</span> <span class="nf">borrow_region</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbf</span><span class="p">(</span><span class="nv">B</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">Q</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbf</span><span class="p">(</span><span class="nv">B</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="p">!</span><span class="nf">killed</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">cfg_edge</span><span class="p">(</span><span class="nv">P</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">outlives</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R3</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">R3</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">Q</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">cfg_edge</span><span class="p">(</span><span class="nv">P</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bff</span><span class="p">(</span><span class="nv">R1</span><span class="p">),</span> <span class="nf">outlives</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R3</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bff</span><span class="p">(</span><span class="nv">R1</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">R3</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">Q</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bff</span><span class="p">(</span><span class="nv">R1</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">cfg_edge</span><span class="p">(</span><span class="nv">P</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">Q</span><span class="p">),</span> <span class="nf">region_live_at</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">d_borrow_live_at_bb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_errors_bb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">invalidates</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_borrow_live_at_bb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">d_requires_fbf</span><span class="p">(</span><span class="nv">B</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbb</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_requires_fbf</span><span class="p">(</span><span class="nv">B</span><span class="p">),</span> <span class="nf">requires</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">P</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
<span class="nf">d_subset_bff</span><span class="p">(</span><span class="nv">R1</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">Q</span><span class="p">).</span>
<span class="nf">d_subset_bfb</span><span class="p">(</span><span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">d_subset_bff</span><span class="p">(</span><span class="nv">R1</span><span class="p">),</span> <span class="nf">subset</span><span class="p">(</span><span class="nv">R1</span><span class="p">,</span> <span class="nv">R2</span><span class="p">,</span> <span class="nv">P</span><span class="p">).</span>
</pre></div>



<a name="176921981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176921981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176921981">(Sep 30 2019 at 11:06)</a>:</h4>
<p>as luck would have it, the result is still stratified (which was likely, but still)</p>



<a name="176922082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176922082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176922082">(Sep 30 2019 at 11:07)</a>:</h4>
<p>I haven't tested this yet, but that wall of text begs a datalog-to-datafrog "compiler" (or helper at least) so I've been toying with that as well</p>



<a name="176968471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176968471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176968471">(Sep 30 2019 at 20:03)</a>:</h4>
<blockquote>
<p>I haven't tested this yet, but that wall of text begs a datalog-to-datafrog "compiler" (or helper at least) so I've been toying with that as well</p>
</blockquote>
<p>Nearing Soufflé at a frightening pace</p>



<a name="176968530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176968530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176968530">(Sep 30 2019 at 20:03)</a>:</h4>
<p>I was just going to drop in and apologise for missing the meeting when I realised it's Monday today, so that's how my day is going</p>



<a name="176968651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176968651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176968651">(Sep 30 2019 at 20:04)</a>:</h4>
<p>Just out of curiosity, how are you doing the datalog-to-datafrog-ification, are you generating Rust code or is it a macro?</p>



<a name="176968677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176968677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176968677">(Sep 30 2019 at 20:05)</a>:</h4>
<p>Can you even make Rust macros that powerful to begin with?</p>



<a name="176970709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176970709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176970709">(Sep 30 2019 at 20:24)</a>:</h4>
<blockquote>
<p>Just out of curiosity, how are you doing the datalog-to-datafrog-ification, are you generating Rust code or is it a macro?</p>
</blockquote>
<p>right now just generating analysis data, rules, some indices (the joins are a bit trickier, not that much, but I haven't completed them yet). no proc macro yet, while I think it's probably doable albeit a bit tricky, it's likely to me that a macro hides too much of the generated code, whereas we'd like to see everything, reorder, remove indices, etc</p>



<a name="176970842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/176970842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#176970842">(Sep 30 2019 at 20:26)</a>:</h4>
<p>I planned on testing this first with soufflé, and then promptly forgot about it, so I've been implementing it with datafrog and the million intermediary steps and indices ... <span aria-label="face palm" class="emoji emoji-1f926" role="img" title="face palm">:face_palm:</span></p>



<a name="177926703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/177926703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#177926703">(Oct 11 2019 at 16:59)</a>:</h4>
<p><a href="https://github.com/rust-lang/polonius/pull/133" target="_blank" title="https://github.com/rust-lang/polonius/pull/133">https://github.com/rust-lang/polonius/pull/133</a> fixes clap</p>



<a name="178843809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/178843809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#178843809">(Oct 23 2019 at 11:25)</a>:</h4>
<p>A person at SPLASH had an entire infrastructure for scraping GitHub and performing experiments so I talked to them about adapting that for my Polonius evaluations. I have no idea if that’s a good idea or not, but I figured that heck why not try. :)</p>



<a name="178844364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/178844364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#178844364">(Oct 23 2019 at 11:34)</a>:</h4>
<p>From what I gathered the pipeline sounded reasonable anyway</p>



<a name="178844403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/178844403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#178844403">(Oct 23 2019 at 11:35)</a>:</h4>
<p>I know we already have crater but if there’s an actual generalised crawling system for these types of things going around I can see why it might be a good idea to get on the bandwagon</p>



<a name="180020539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/180020539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#180020539">(Nov 06 2019 at 10:54)</a>:</h4>
<blockquote>
<p>A person at SPLASH had an entire infrastructure for scraping GitHub and performing experiments so I talked to them about adapting that for my Polonius evaluations. I have no idea if that’s a good idea or not, but I figured that heck why not try. :)</p>
</blockquote>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> Do you remember who?</p>



<a name="180022894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/180022894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#180022894">(Nov 06 2019 at 11:30)</a>:</h4>
<p>Yes! Andrea Rosa with the NAB project. Here: <a href="https://2019.splashcon.org/details/splash-2019-Posters/6/NAB-Automated-Large-scale-Multi-language-Dynamic-Program-Analysis-in-Public-Code-Rep" target="_blank" title="https://2019.splashcon.org/details/splash-2019-Posters/6/NAB-Automated-Large-scale-Multi-language-Dynamic-Program-Analysis-in-Public-Code-Rep">https://2019.splashcon.org/details/splash-2019-Posters/6/NAB-Automated-Large-scale-Multi-language-Dynamic-Program-Analysis-in-Public-Code-Rep</a></p>



<a name="180022925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/180022925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#180022925">(Nov 06 2019 at 11:30)</a>:</h4>
<p>I'm in an email conversation with them about how hard it would be to adapt this for my Polonius input study</p>



<a name="180023330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/180023330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vytautas Astrauskas [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#180023330">(Nov 06 2019 at 11:37)</a>:</h4>
<p>Thanks!</p>



<a name="182430258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182430258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182430258">(Dec 03 2019 at 09:45)</a>:</h4>
<p>just a heads up: someone archived the paper document <a href="https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF" target="_blank" title="https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF">https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF</a> -- it's happened before but this time I'm unable to restore it</p>



<a name="182489331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489331">(Dec 03 2019 at 20:02)</a>:</h4>
<p>I saw</p>



<a name="182489524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489524">(Dec 03 2019 at 20:03)</a>:</h4>
<p>I was, apparently</p>



<a name="182489540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489540">(Dec 03 2019 at 20:03)</a>:</h4>
<p>heh nice, thanks :)</p>



<a name="182489615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489615">(Dec 03 2019 at 20:04)</a>:</h4>
<p>I wonder if we can remove the person (I forget their handle) who restored it</p>



<a name="182489644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489644">(Dec 03 2019 at 20:04)</a>:</h4>
<p>I guess it's a sign to move it elsewhere ? this feature of dropbox paper where you archive it for everyone while you only wanted it to archive for yourself is unfortunate</p>



<a name="182489654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489654">(Dec 03 2019 at 20:05)</a>:</h4>
<p>Apparently I could remove them, so I did</p>



<a name="182489659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489659">(Dec 03 2019 at 20:05)</a>:</h4>
<p>I guess that's what they wanted</p>



<a name="182489667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489667">(Dec 03 2019 at 20:05)</a>:</h4>
<p>But yes probably</p>



<a name="182489686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489686">(Dec 03 2019 at 20:05)</a>:</h4>
<blockquote>
<p>Apparently I could remove them, so I did</p>
</blockquote>
<p>no mercy from Albin :)</p>



<a name="182489715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/182489715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#182489715">(Dec 03 2019 at 20:05)</a>:</h4>
<p>I mean, it's the same person and they clearly didn't want to have any part in it</p>



<a name="183060746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/183060746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#183060746">(Dec 10 2019 at 13:53)</a>:</h4>
<p>thanks a bunch for the quick review <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> :)</p>



<a name="183062329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/183062329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#183062329">(Dec 10 2019 at 14:11)</a>:</h4>
<p>You're welcome! :)</p>



<a name="183097570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/183097570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#183097570">(Dec 10 2019 at 20:15)</a>:</h4>
<blockquote>
<p>just a heads up: someone archived the paper document <a href="https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF" target="_blank" title="https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF">https://paper.dropbox.com/doc/Polonius-Roadmap--Apwt4mtm3X77Ztz9GFsQ8I4yAg-hk3a9ynduUN2gk1A0NNTF</a> -- it's happened before but this time I'm unable to restore it</p>
</blockquote>
<p>ps we should switch to hackmd I think</p>



<a name="183097628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/183097628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#183097628">(Dec 10 2019 at 20:16)</a>:</h4>
<p>agreed</p>



<a name="184170182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/184170182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#184170182">(Dec 24 2019 at 13:44)</a>:</h4>
<p>I'm guessing today's meeting is cancelled, but happy holidays everyone! :)</p>



<a name="184170423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/184170423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#184170423">(Dec 24 2019 at 13:49)</a>:</h4>
<p><span aria-label="holiday tree" class="emoji emoji-1f384" role="img" title="holiday tree">:holiday_tree:</span></p>



<a name="184226828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/184226828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#184226828">(Dec 25 2019 at 18:24)</a>:</h4>
<p><span aria-label="holiday tree" class="emoji emoji-1f384" role="img" title="holiday tree">:holiday_tree:</span><span aria-label="snowman" class="emoji emoji-2603" role="img" title="snowman">:snowman:</span>️<span aria-label="champagne" class="emoji emoji-1f37e" role="img" title="champagne">:champagne:</span></p>



<a name="184932519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/184932519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#184932519">(Jan 06 2020 at 18:27)</a>:</h4>
<p>I wanted to mention I won't be available for tomorrow's meeting, if everyone's back already. I don't have a lot to update anyway: slowly working on improving the datafrog generator</p>



<a name="185044543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185044543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185044543">(Jan 07 2020 at 19:23)</a>:</h4>
<p>I’m back but I don’t have anything more interesting to say than that I’ve rebased my initialisation branch against master and removed all my updated facts (which means that some tests no longer pass).</p>



<a name="185044587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185044587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185044587">(Jan 07 2020 at 19:23)</a>:</h4>
<p>I’ll have to think about which facts to keep and add at least one test that exercises the initialisation part</p>



<a name="185044682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185044682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185044682">(Jan 07 2020 at 19:24)</a>:</h4>
<p>Also, rebasing my changes to rustc was harder, as I thought :(</p>



<a name="185048343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185048343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185048343">(Jan 07 2020 at 19:58)</a>:</h4>
<p>I've not done anything ... I'm back-ish now...</p>



<a name="185537574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185537574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185537574">(Jan 13 2020 at 21:06)</a>:</h4>
<p>just in case knowing about this a day early could change people's plans about tomorrow's meeting, I myself have nothing to report unfortunately: I haven't had any time to work on polonius this week, sorry :/</p>



<a name="185625229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185625229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185625229">(Jan 14 2020 at 18:37)</a>:</h4>
<p>Me neither, and I have a cold so my brain is mush :(</p>



<a name="185630740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185630740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185630740">(Jan 14 2020 at 19:28)</a>:</h4>
<p>I guess it'll be a blessing in disguise by allowing Matthew and Niko to have the time to talk about typeck and region solving</p>



<a name="185634220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185634220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185634220">(Jan 14 2020 at 20:01)</a>:</h4>
<p><span aria-label="heart" class="emoji emoji-2764" role="img" title="heart">:heart:</span></p>



<a name="185634272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185634272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185634272">(Jan 14 2020 at 20:02)</a>:</h4>
<p>Sorry I've been so out of it lately as well</p>



<a name="185634587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185634587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185634587">(Jan 14 2020 at 20:05)</a>:</h4>
<p>Vytautas has been working wonders on the datafrog generator though, eg a WIP proc macro <a href="https://github.com/lqd/datapond/pull/2" target="_blank" title="https://github.com/lqd/datapond/pull/2">https://github.com/lqd/datapond/pull/2</a> :D</p>



<a name="185706247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/185706247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#185706247">(Jan 15 2020 at 15:09)</a>:</h4>
<p>Cool!</p>



<a name="186173822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186173822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186173822">(Jan 21 2020 at 11:25)</a>:</h4>
<p>sorry again, my home laptop still hasn't been repaired and I won't be able to attend tonight's meeting :/ I haven't had much time to use my work computer at lunch breaks either, but I'm trying to understand/review the datafrog generator PR Vytautas has been doing; so, not much progress or things to report unfortunately</p>



<a name="186214482"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186214482" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186214482">(Jan 21 2020 at 18:54)</a>:</h4>
<p>It's fine by me, I don't have anything interesting to say yet either</p>



<a name="186214499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186214499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186214499">(Jan 21 2020 at 18:54)</a>:</h4>
<p>I'm currently working on...rebasing my changes to rustc</p>



<a name="186219718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186219718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186219718">(Jan 21 2020 at 19:48)</a>:</h4>
<p>hey all</p>



<a name="186219723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186219723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186219723">(Jan 21 2020 at 19:48)</a>:</h4>
<p>so I actually had a very uneven work day because</p>



<a name="186219743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186219743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186219743">(Jan 21 2020 at 19:48)</a>:</h4>
<p>I fell over the weekend and was at the doctor getting an x-ray (no fractures, just bruising)</p>



<a name="186219764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186219764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186219764">(Jan 21 2020 at 19:49)</a>:</h4>
<p>and in general it's been a bit hard for me to type today as areuslt</p>



<a name="186219774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186219774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186219774">(Jan 21 2020 at 19:49)</a>:</h4>
<p>all of which is to say, doing somewhat better now, but it's ok by me to skip :P</p>



<a name="186222869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/186222869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#186222869">(Jan 21 2020 at 20:20)</a>:</h4>
<p>oh wow, get well soon Niko</p>



<a name="189726940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189726940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189726940">(Mar 04 2020 at 19:39)</a>:</h4>
<p>I think it's probably a good idea (and shouldn't be too difficult) to do location-insensitive subset errors, either via subsets or placeholder loans, so that the <code>Hybrid</code> variant can help us out greatly again. Even if <code>LocationInsensitive</code> would be more computationally intensive than it is today, it'd be milliseconds to save seconds (and IIRC the location-insensitive loan analysis is heavily dominated by move/init analysis and liveness by 20x-40x each on <code>clap</code>)</p>



<a name="189727187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189727187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189727187">(Mar 04 2020 at 19:42)</a>:</h4>
<p>(yes, I know, perf is for later <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span>)</p>



<a name="189727671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189727671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189727671">(Mar 04 2020 at 19:47)</a>:</h4>
<p>(also to help pre-filter the interesting origins to those possibly causing subset errors in the regular loan analysis, not just for the <code>Hybrid</code> variant)</p>



<a name="189898300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189898300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189898300">(Mar 06 2020 at 14:34)</a>:</h4>
<p>ah some facts are broken on master :/</p>



<a name="189898578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189898578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189898578">(Mar 06 2020 at 14:36)</a>:</h4>
<p>trying to update them made me see that move errors are taking 1m40s on clap</p>



<a name="189932025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/189932025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#189932025">(Mar 06 2020 at 20:43)</a>:</h4>
<p>here's a fix for the facts <a href="https://github.com/rust-lang/polonius/pull/144" target="_blank" title="https://github.com/rust-lang/polonius/pull/144">https://github.com/rust-lang/polonius/pull/144</a> with a couple tests for move errors cc <span class="user-mention" data-user-id="204115">@Albin Stjerna</span></p>



<a name="206000707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/206000707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#206000707">(Aug 05 2020 at 08:50)</a>:</h4>
<p>beautiful :D <a href="/user_uploads/4715/uGf7shwG1bq1Ba1e9vCXJ_OF/image.png">tracy_profile.png</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/uGf7shwG1bq1Ba1e9vCXJ_OF/image.png" title="tracy_profile.png"><img src="/user_uploads/4715/uGf7shwG1bq1Ba1e9vCXJ_OF/image.png"></a></div>



<a name="226261564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/226261564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#226261564">(Feb 13 2021 at 19:07)</a>:</h4>
<p>My day:</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="c1">// SAFETY: This is only safe if we no longer have any</span>
<span class="c1">// outstanding references to `parser`. Since we can</span>
<span class="c1">// only get here if the token was `None` or an</span>
<span class="c1">// `Error`, there can be no references.</span>
<span class="c1">//</span>
<span class="c1">// This is a manifestation of NLL case 3.</span>
</code></pre></div>



<a name="242555255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/242555255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lengyijun <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#242555255">(Jun 14 2021 at 05:55)</a>:</h4>
<p>I have basic knowledge about Polonius and I have some spare time. <br>
What can I do to contribute to Polonius?</p>



<a name="242557309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/242557309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#242557309">(Jun 14 2021 at 06:34)</a>:</h4>
<p>I think niko will have some potentially interesting feedback soon about our uses of solvers. But if that basically validates how chalk/polonius have been doing, maybe pushing on move errors could the most logical place. </p>
<p>That is, helping what Amanda was analyzing, looking for, and so on in this topic <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/move.20error.20reporting">https://rust-lang.zulipchat.com/#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/move.20error.20reporting</a> -- there are a couple of unexplained things in the move error analysis, causing, say, false positives (depending on which point some facts are located) and incorrect results. </p>
<p>The analysis itself is surely incomplete, at the very least wrt partial moves (<a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/move.20errors.3A.20partial.20assignments.20to.20moved.20variables">https://rust-lang.zulipchat.com/#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/move.20errors.3A.20partial.20assignments.20to.20moved.20variables</a>) and maybe more, and so on.</p>



<a name="245938441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/245938441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#245938441">(Jul 14 2021 at 09:45)</a>:</h4>
<p>Ooo solvers would be interesting!</p>



<a name="245938563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/245938563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#245938563">(Jul 14 2021 at 09:46)</a>:</h4>
<p>If I play my cards right and all the dominoes fall where I want them to, my dissertation topic will be an SMT solver in Rust (which, for some reason, nobody's really done), plus caveats of course.</p>



<a name="245938593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/general/near/245938593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/general.html#245938593">(Jul 14 2021 at 09:47)</a>:</h4>
<p>You know, something like "first solver to frob the blarfs while borking the worbel without zuuling the frooz"</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>